<html>
  <head>
    Azure服务总线集成
  </head>
  <body>
    <script>
        // 分布式事件总线Azure集成 

        /*
            一、安装


                  1、abp cli 安装
                        使用ABP CLI将 "Volo.Abp.EventBus.Azure"  NuGet包添加到你的项目中：

                              在要添加 "Volo.Abp.EventBus.Azure" 包的.csproj文件目录中打开命令行（终端）。

                              运行 "abp add-package Volo.Abp.EventBus.Azure "命令

                  2、手动安装

                        如果你想手动执行此操作，请将Volo.Abp.EventBus.AzureNuGet包安装到你的项目中，
                        
                        并将[DependsOn(typeof(AbpEventBusAzureModule))]添加到项目内的ABP模块类中。

        */

        /*
            二、配置

                    你可以使用标准配置系统进行配置，例如使用appsettings.json文件，或使用选项类。

                    1、appsettings.json 文件配置

                          这是配置Azure服务总线设置的最简单方法。

                          它也非常强大，因为你可以使用AspNet Core支持的任何其他配置源（如环境变量）。

                                eg: 使用默认配置连接到Azure服务总线命名空间的最小配置

                                      {
                                        "Azure": {
                                          "ServiceBus": {
                                            "Connections": {
                                              "Default": {
                                                "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={};EntityPath=marketing-consent"
                                              }
                                            }
                                          },
                                          "EventBus": {
                                            "ConnectionName": "Default",
                                            "SubscriberName": "MySubscriberName",  // 此订阅的名称
                                            "TopicName": "MyTopicName"
                                          }
                                        }
                                      }


                              MySubscriberName是此订阅的名称，用作Azure服务总线上的订阅者。

                              MyTopicName是主题名称。

                              请参阅Azure服务总线文档以更好地了解这些选项。


                              ★、Connections 连接

                                      如果需要以默认值连接到另一个Azure服务总线命名空间，则需要配置连接属性

                                      eg:  声明两个连接并将其中一个用于事件总线、

                                            {
                                              "Azure": {
                                                "ServiceBus": {
                                                  "Connections": {
                                                    "Default": {
                                                      "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={{SharedAccessKey}}"
                                                    },
                                                    "SecondConnection": {
                                                      "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={{SharedAccessKey}}"
                                                    }
                                                  }
                                                },
                                                "EventBus": {
                                                  "ConnectionName": "SecondConnection",
                                                  "SubscriberName": "MySubscriberName",
                                                  "TopicName": "MyTopicName"
                                                }
                                              }
                                            }

                                        这允许你在应用程序中使用多个Azure服务总线命名空间，但为事件总线选择其中一个。

                                        你可以使用任何ServiceBusAdministrationClientOptions、ServiceBusClientOptions、ServiceBusProcessorOptions属性进行连接。

                                            eg:  自定管理员、客户端 和处理器选项：

                                              {
                                                "Azure": {
                                                  "ServiceBus": {
                                                    "Connections": {
                                                      "Default": {
                                                        "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={};EntityPath=marketing-consent",
                                                        "Admin": {
                                                          "Retry": {
                                                            "MaxRetries": 3
                                                          }
                                                        },
                                                        "Client": {
                                                          "RetryOptions": {
                                                            "MaxRetries": 1
                                                          }
                                                        },
                                                        "Processor": {
                                                          "AutoCompleteMessages": true,
                                                          "ReceiveMode": "ReceiveAndDelete"
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "EventBus": {
                                                    "ConnectionName": "Default",
                                                    "SubscriberName": "MySubscriberName",
                                                    "TopicName": "MyTopicName"
                                                  }
                                                }
                                              }

                  2、配置类 

                          AbpAzureServiceBusOptions  和  AbpAzureEventBusOptions 这两个类可用于配置Azure服务总线的连接字符串和事件总线选项。

                          你可以在模块的ConfigureServices中配置此选项。

                          eg:  配置连接

                                Configure<AbpAzureServiceBusOptions>(options =>
                                {
                                    options.Connections.Default.ConnectionString = "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={}";
                                    options.Connections.Default.Admin.Retry.MaxRetries = 3;
                                    options.Connections.Default.Client.RetryOptions.MaxRetries = 1;
                                });



                  使用这些选项类可以与appsettings.json方式结合使用。在代码中配置选项属性会覆盖配置文件中的值。


       */
    </script>
  </body>
</html>